home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 21
/
CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso
/
CUCD
/
Programming
/
MCC_SettingsWindow
/
Developer
/
Autodocs
/
MCC_SettingsWindow.doc
Wrap
Text File
|
1997-12-20
|
16KB
|
509 lines
TABLE OF CONTENTS
SettingsWindow.mcc/SettingsWindow.mcc
SettingsWindow.mcc/Types
SettingsWindow.mcc/MUIA_SettingsWindow_Changed
SettingsWindow.mcc/MUIA_SettingsWindow_PortDirectly
SettingsWindow.mcc/MUIA_SettingsWindow_TestButton
SettingsWindow.mcc/MUIA_SettingsWindow_TestMode
SettingsWindow.mcc/MUIM_SettingsWindow_Cancel
SettingsWindow.mcc/MUIM_SettingsWindow_CustomInsert
SettingsWindow.mcc/MUIM_SettingsWindow_GetItem
SettingsWindow.mcc/MUIM_SettingsWindow_KillNotify
SettingsWindow.mcc/MUIM_SettingsWindow_KillNotifyObj
SettingsWindow.mcc/MUIM_SettingsWindow_Init
SettingsWindow.mcc/MUIM_SettingsWindow_LastSaved
SettingsWindow.mcc/MUIM_SettingsWindow_Load
SettingsWindow.mcc/MUIM_SettingsWindow_NNSetItem
SettingsWindow.mcc/MUIM_SettingsWindow_Notify
SettingsWindow.mcc/MUIM_SettingsWindow_Reset
SettingsWindow.mcc/MUIM_SettingsWindow_Restore
SettingsWindow.mcc/MUIM_SettingsWindow_Save
SettingsWindow.mcc/MUIM_SettingsWindow_SaveAs
SettingsWindow.mcc/MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_Store
SettingsWindow.mcc/MUIM_SettingsWindow_Use
SettingsWindow.mcc/SettingsWindow.mcc
SettingsWindow.mcc is a subclass of Window.mui that allows you to easily
manage your programs settings. There is a notification mechanism similar to
that of MUI to react on changing settings. A row of buttons and a menu let
the user have the standard save, use, load functions.
The SettingsWindowObject can be created similar to an ordinary WindowObject,
but without menustrip. The object you supply as root object will be put in a
vertical group with a row of buttons (save, use [, test], cancel). The
objects in the SettingsWindow have nothing to do with the settings handling
directly - you must explicitly specify this using MUIM_SettingsWindow_Init.
SettingsWindow.mcc/Types
Something about the types you can use with MUIM_SettingsWindow_Init:
SWIT_STANDARD:
Used for "4 bytes" attributes such as BOOL or ULONG, where you can get()
the value directly, not a pointer to it.
SWIT_STRING:
The attribute is a string pointer (e.g. MUIA_String_Contents).
SWIT_STRUCT:
The attribute can be a pointer to a structure or any data with a fixed
size (e.g. MUIA_Pendisplay_Spec).
SWIT_COMPLEX:
The attribute is a pointer to a well defined structure that can contain
pointers to further data that can contain pointers... and so on. Invoking
MUIM_SettungsWindow_Init you must supply a pointer to an array of UWORD
describing this data format for the size parameter.
This array contains exactly one type specified by the following BNF:
type := simple / array / pointer / struct / string
simple := "SWIS_BYTE" / "SWIS_WORD" / "SWIS_LONG" / "SWIS_EVEN"
/ "SWIS_EVEN4" / <number of range 1...32767>
array := "SWIS_ARRAY" "," <number of range 0...65534> "," type
pointer := "SWIS_POINTER" "," type
struct := "SWIS_STRUCT" "," types "SWIS_END"
string := "SWIS_STRING" "," count
count := "-1" / <number of range 0...65534>
types := type "," ftypes
ftypes := types / ""
type - a simple type, an array, a pointer, a structure or a string
simple - one of the simple types byte, word, longword, even address,
address divisible by four or a number of bytes
array - number of elements of the same type
pointer - pointer to a type
struct - structure of various types
string - chain of count (terminated by 0 if -1) characters
Example:
static UWORD testit_des[]=
{
SWIS_STRUCT,
SWIS_POINTER, SWIS_STRING,-1,
SWIS_LONG,
SWIS_LONG,
SWIS_POINTER, SWIS_STRING,-1,
SWIS_END
};
describes a structure like the following:
struct testit
{
STRPTR str1;
ULONG u1;
ULONG u2;
STRPTR str2;
};
SWIT_(N)LISTSTANDARD
The object is a (N)List of "4 byte"-entries.
SWIT_(N)LISTSTRING
The object is a (N)List of string pointers.
SWIT_(N)LISTSTRUCT
The object is a (N)List of pointers to a structure or any data with a
fixed size.
SWIT_(N)LISTCOMPLEX
The object is a (N)List of pointers to rather complex structures (take a
look at SWIT_COMPLEX). Invoking MUIM_SettungsWindow_Init you must supply
a pointer to an array of UWORD describing this data format for the size
parameter.
SWIT_(N)LISTCUSTOM
Similar to SWIT_(N)LISTCOMPLEX, but the lists construct hook doesn't
simply copies the supplied data. That's why instead of
MUIM_(N)List_Insert MUIM_SettingsWindow_CustomInsert is invoked.
SettingsWindow.mcc/MUIA_SettingsWindow_Changed
NAME
MUIA_SettingsWindow_Changed -- [.SGN], BOOL
FUNCTION
This attribute is set to TRUE, whenever the current settings have been
changed. This is quite useful, if you don't like to react on each
modified item, but on a group of items, e.g. dimensions and position
of an open window.
SettingsWindow.mcc/MUIA_SettingsWindow_PortDirectly
NAME
MUIA_SettingsWindow_PortDirectly -- [.SGN], BOOL
FUNCTION
This attribute affects the import/export behaviour.
Set to FALSE the stored settings item values are im-/exported, the
attributes of the objects you gave MUIM_SettingsWindow_Init are used
otherwise (e.g. in MUIM_SettingsWindow_Load and
MUIM_SettingsWindow_SaveAs).
I can't imagine any reason why you should need this attribute.
SettingsWindow.mcc/MUIA_SettingsWindow_TestButton
NAME
MUIA_SettingsWindow_TestButton -- [I...], BOOL
FUNCTION
Enable or disable the "Test" button. Defaults to FALSE.
SettingsWindow.mcc/MUIA_SettingsWindow_TestMode
NAME
MUIA_SettingsWindow_TestMode -- [.SGN], BOOL
FUNCTION
Setting this attribute to TRUE turns on the test mode, changes made
affect the application as long as the settings window stays open.
Setting it to FALSE has no further effect.
Your application does not have to care wether it's in test mode or
not. Since the MUIM_SettingsWindow_Store method is called when
MUIA_SettingsWindow_TestMode is set to TRUE (e.g. when the user hits
the "Test" button), all settings will affect the application the same
way using or saving would do. The only difference is that the
settings window stays open and the user has the ability to cancel
what he has done.
SettingsWindow.mcc/MUIM_SettingsWindow_Cancel
NAME
MUIM_SettingsWindow_Cancel
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Cancel);
FUNCTION
Close the settings window and call MUIM_SettingsWindow_Reset to reset
all attributes concerned.
This method is called when the user hits the "Cancel" button or
selects the window close gadget or the "Quit" menu item. Usually
that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_CustomInsert
NAME
MUIM_SettingsWindow_CustomInsert
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_CustomInsert,APTR *Entries,
ULONG Count, ULONG Pos);
FUNCTION
Within MUIM_SettingsWindow_Reset the settings window object invokes
this method on the concerned object of settings items of type
SWIT_(N)LISTCUSTOM.
You have to implement this method in a subclass, if your list
objects construct hook doesn't simply copies the supplied data.
INPUTS
The parameters are the same as used by MUIM_(N)List_Insert.
NOTE
This method has to return TRUE. This is not important in the current
version, but may become vital for future extensions.
SEE ALSO
MUIM_SettingsWindow_Init
SettingsWindow.mcc/MUIM_SettingsWindow_GetItem
NAME
MUIM_SettingsWindow_GetItem
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_GetItem,ULONG ID, ULONG *Storage);
FUNCTION
The function is equivalent to that of OM_GET.
INPUTS
ID - ID of the settings item you want to get.
Storage - pointer to the space where MUIM_SettingsWindow_GetItem
shall store the data.
SEE ALSO
MUIM_SettingsWindow_Init, MUIM_SettingsWindow_Notify,
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_KillNotify
NAME
MUIM_SettingsWindow_KillNotify
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_KillNotify,ULONG TrigID);
FUNCTION
The function is equivalent to that of MUIM_KillNotify.
INPUTS
TrigID - ID of the settings item you want to remove a notification
handler from.
SEE ALSO
MUIM_SettingsWindow_KillNotifyObj, MUIM_SettingsWindow_Notify,
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_KillNotifyObj
NAME
MUIM_SettingsWindow_KillNotifyObj
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_KillNotifyObj,ULONG TrigID,
Object *DestObj);
FUNCTION
The function is equivalent to that of MUIM_KillNotifyObj.
INPUTS
TrigID - ID of the settings item you want to remove a notification
handler from.
DestObj - the object the notification method should be performed at.
SEE ALSO
MUIM_SettingsWindow_KillNotify, MUIM_SettingsWindow_Notify,
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_Init
NAME
MUIM_SettingsWindow_Init
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Init,Object *Obj1, ULONG Attr1,
ULONG Type1, ULONG Size1, ULONG ID1, /* ... */);
FUNCTION
Initialize the settings window object. You have to define which
attribute of which object of which type, size and id you want to
get managed by your settings window object.
The method calls MUIM_SettingsWindow_Store to get valid values and
after that it tries to load the current settings with
MUIM_SettingsWindow_Load.
INPUTS
Obj1 - pointer to an object that contains the attribute that shall
be managed by this settings window object.
Attr1 - TagID of the attribute, ignored for SWIT_(N)LISTxxx.
Type1 - type of the attribute/object, take a look at the type
section
Size1 - size of the attribute for SWIT_STRING and SWIT_STRUCT;
size of the list entries for SWIT_(N)LISTSTRING and
SWIT_(N)LISTSTRUCT;
pointer to a description array for SWIT_([N]LIST)COMPLEX and
SWIT_(N)LISTCUSTOM;
ignored for SWIT_STANDARD and SWIT_(N)LIST_STANDARD.
ID - ID of the settings item used to access the item via
MUIM_SettingsWindow_SetItem/GetItem/Notify, but it's used to
save the item, too. So don't give another object the same
MUIA_ObjectID.
The parameters for the next settings item follow. There can be as
many items as you want; a NULL object pointer indicates the end of the
array.
SEE ALSO
MUIM_SettingsWindow_GetItem, MUIM_SettingsWindow_Notify,
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_LastSaved
NAME
MUIM_SettingsWindow_LastSaved
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_LastSaved);
FUNCTION
Load the last saved settings.
This method is called when the user selects the "Last Saved" menu
item. Usually that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_Load
NAME
MUIM_SettingsWindow_Load
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Load);
FUNCTION
Pop up an ASL requester where the user can select the settings he wants
to load.
This method is called when the user selects the "Load" menu item.
Usually that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_NNSetItem
NAME
MUIM_SettingsWindow_NNSetItem
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_NNSetItem,ULONG ID, ULONG Value);
FUNCTION
The function is equivalent to that of MUIM_NoNotifySet.
INPUTS
ID - ID of the settings item you want to set.
Value - value to set the item to.
SEE ALSO
MUIM_SettingsWindow_GetItem, MUIM_SettingsWindow_Notify
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_Notify
NAME
MUIM_SettingsWindow_Notify
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Notify,ULONG TrigID, ULONG TrigValue,
Object *DestObj, ULONG FollowParams, /* ... */);
FUNCTION
The function is equivalent to that of MUIM_Notify.
INPUTS
TrigID - ID of the settings item that triggers the notification.
TrigValue - value that triggers the notification,
MUIV_EveryTime is supported.
DestObj - object on which to perform the notification method,
MUIV_Notify_Self, MUIV_Notify_Window and
MUIV_Notify_Application are supported.
FollowParams - number of the following parameters.
MUIV_TriggerValue and MUIV_NotTriggerValue are supported for the
following parameters.
RESULT
Since it needs to allocate memory, this method can fail. It returns
TRUE if successful, FALSE otherwise.
SEE ALSO
MUIM_SettingsWindow_GetItem, MUIM_SettingsWindow_NNSetItem
MUIM_SettingsWindow_SetItem
SettingsWindow.mcc/MUIM_SettingsWindow_Reset
NAME
MUIM_SettingsWindow_Reset
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Reset);
FUNCTION
Set all attributes to the values the settings window object has
stored. This method is called from MUIM_SettingsWindow_Cancel.
Usually you don't need to call it.
SettingsWindow.mcc/MUIM_SettingsWindow_Restore
NAME
MUIM_SettingsWindow_Restore
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Restore);
FUNCTION
Load the last used settings.
This method is called when the user selects the "Restore" menu
item. Usually that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_Save
NAME
MUIM_SettingsWindow_Save
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Save);
FUNCTION
Save the current settings to "ENVARC:" and call
MUIM_SettingsWindow_Use.
This method is called when the "Save" button was pressed. Usually
that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_SaveAs
NAME
MUIM_SettingsWindow_SaveAs
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_SaveAs);
FUNCTION
Pop up an ASL requester where the user can select a file he wants to
save the current settings as.
This method is called when the user selects the "Save As" menu item.
Usually that's something you don't have to care for.
SettingsWindow.mcc/MUIM_SettingsWindow_SetItem
NAME
MUIM_SettingsWindow_SetItem
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_SetItem,ULONG ID, ULONG Value);
FUNCTION
The function is equivalent to that of MUIM_Set.
INPUTS
ID - ID of the settings item you want to set.
Value - value to set the item to.
SEE ALSO
MUIM_SettingsWindow_GetItem, MUIM_SettingsWindow_NNSetItem
MUIM_SettingsWindow_Notify
SettingsWindow.mcc/MUIM_SettingsWindow_Store
NAME
MUIM_SettingsWindow_Store
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Store);
FUNCTION
Get all attributes and store it. This method is called from
MUIM_SettingsWindow_Use.
Usually you don't need to call it.
SettingsWindow.mcc/MUIM_SettingsWindow_Use
NAME
MUIM_SettingsWindow_Use
SYNOPSIS
DoMethod(obj,MUIM_SettingsWindow_Use);
FUNCTION
Call MUIM_SettingsWindow_Store to store the changes, close the
settings window and save the current settings to "ENV:".
This method is called when the user hits the "Use" button. Usually
that's something you don't have to care for.